import request from '../../utils/request';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.checkLoginStatus();
  },

  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    const userInfo = wx.getStorageSync('userInfo');
    if (userInfo) {
      this.setData({
        userInfo
      });
    }
  },

  /**
   * 登录按钮点击事件
   */
  onLogin() {
    // 直接调用微信获取用户信息接口
    wx.getUserProfile({
      desc: '用于完成登录并同步学习进度',
      success: (res) => {
        console.log('getUserProfile成功:', res);
        this.handleUserInfo(res);
      },
      fail: (err) => {
        console.error('getUserProfile失败:', err);
        wx.showModal({
          title: '授权失败',
          content: `获取用户信息失败: ${err.errMsg}`,
          showCancel: false,
          confirmText: '知道了'
        });
      }
    });
  },

  /**
   * 处理用户信息
   */
  handleUserInfo(e) {
    // 显示加载中
    wx.showLoading({
      title: '登录中...',
      mask: true
    });

    // 1. 获取code（用于后端获取session_key）
    wx.login({
      success: (loginRes) => {
        if (loginRes.code) {
          // 2. 调用后端接口
          request.post('/auth/login', {
            code: loginRes.code,
            userInfo: e.userInfo
          }).then((res) => {
            wx.hideLoading();

            if (res.code == '100') {
              // 保存用户信息和token
              wx.setStorageSync('token', res.data);
              // wx.setStorageSync('userInfo', res.data.user);

              // this.setData({
              //   userInfo: res.data.user
              // });

              wx.showToast({
                title: '登录成功',
                icon: 'success',
                duration: 2000
              });
            } else {
              wx.showToast({
                title: res.message || '登录失败',
                icon: 'error',
                duration: 2000
              });
            }
          }).catch((err) => {
            wx.hideLoading();
            console.error('登录失败:', err);
            wx.showToast({
              title: '网络错误',
              icon: 'error',
              duration: 2000
            });
          });
        } else {
          wx.hideLoading();
          wx.showModal({
            title: '登录失败',
            content: `获取登录码失败: ${loginRes.errMsg}`,
            showCancel: false,
            confirmText: '知道了'
          });
        }
      },
      fail: (err) => {
        wx.hideLoading();
        console.error('wx.login失败:', err);
        wx.showModal({
          title: '登录失败',
          content: `获取登录码失败: ${err.errMsg}`,
          showCancel: false,
          confirmText: '知道了'
        });
      }
    });
  },

  /**
   * 退出登录
   */
  logout() {
    // 清除本地存储
    wx.removeStorageSync('token');
    wx.removeStorageSync('userInfo');

    // 更新页面状态
    this.setData({
      userInfo: null
    });

    wx.showToast({
      title: '已退出登录',
      icon: 'success',
      duration: 2000
    });
  }
})
